package bean;

import java.net.InetAddress;

import client.Client;
import client.ClientTools;
import serveur.Serveur_Central_Bean;
import serveur.Serveur_Central_ITF;
import anneau.Noeud_Bean;
import anneau.Noeud_ITF;


public class ConnexionEJB {
	// ATTRIBUTS
	public static Noeud_ITF noeud = null;
	public static Serveur_Central_ITF serveur_central = null;
	
	
	// METHODES
	/**
	 * Recupere le service de nommage, recupere le Serveur_Central, recupere le Noeud, demande la connexion du Noeud au Serveur_Central.
	 */
	public static void connexion() {
		// On lance la connexion aux EJB
		try {
			System.out.println("ConnexionEJB.connexion - Récupération du service de nommage...");
			javax.naming.Context ic;
			
			if (Client.isLocalhost)
				ic = new javax.naming.InitialContext(ClientTools.giveMeJndiProperties());
			else
				ic = new javax.naming.InitialContext(ClientTools.giveMeJndiProperties(Client.ipServer));
			
			System.out.println("ConnexionEJB.connexion - Service de nommage récupéré.");
			System.out.println("ConnexionEJB.connexion - Récupération du Serveur_Central_ITF...");
			serveur_central = (Serveur_Central_ITF) ic.lookup(ClientTools.giveMeTheRemoteNameOfMyEjb("Projet_EJB_Serveur", Serveur_Central_Bean.class, Serveur_Central_ITF.class, false));
			System.out.println("ConnexionEJB.connexion - Serveur_Central_ITF récupéré.");
			System.out.println("ConnexionEJB.connexion - Récupération du Noeud_ITF...");
			noeud = (Noeud_ITF) ic.lookup(ClientTools.giveMeTheRemoteNameOfMyEjb("Projet_EJB_Serveur", Noeud_Bean.class, Noeud_ITF.class, true));
			System.out.println("ConnexionEJB.connexion - Noeud_ITF récupéré.");
			System.out.println("ConnexionEJB.connexion - Demande de connexion à l'anneau...");
			serveur_central.connexion(noeud);
			System.out.println("ConnexionEJB.connexion - Noeud_ITF connecté.");
			//String adresseIp = "127.0.0.1";
			String adresseIp = InetAddress.getLocalHost().getHostAddress();
			noeud.setAdresseIp(adresseIp);
			noeud.setPort(Client.port);
			System.out.println("ConnexionEJB.connexion - adresse IP : " + adresseIp + ":" + Client.port);
			System.out.println(noeud.heartBeat());
		}
		catch(Exception e) { System.err.println("\tConnexionEJB.connexion - Erreur : " + e.getMessage()); }
	}
}
